PHP Threepenny MVC Alles in elkaar zetten
Home

PHP Threepenny MVC Alles in elkaar zetten

PHP Threepenny MVC Alles in elkaar zetten

We hebben de onderdelen van MVC gezien, tijd dus om alles in elkaar te zetten en de aanzet tot het Fric-frac MVC project te maken.

Stappenplan

  1. De dispatcher gebruiken
    <?php
    use ThreepennyMVC\FrontController;
    include_once('../vendor/threepennymvc/FrontController.php');
    include_once('../vendor/threepennymvc/Controller.php');
    include_once('Controllers/AdminController.php');
    include_once('Controllers/EventController.php');
    $route = FrontController::getRouteData($_SERVER['REQUEST_URI'], 'Fricfrac', 'Admin', 'index');
    $view = FrontController::dispatch($route);
    ?>
    <!DOCTYPE html>
    <html lang="nl">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" type="text/css" href="/css/app.css">
        <link rel="stylesheet" type="text/css" href="/css/icon-font.css">
        <title>Fric-frac events</title>
    </head>
    <body class="page">
    <header class="page-header">
            <nav class="control-panel">
                <a href="/index.php" class="tile">
                    <span class="icon-menu"></span>
                    <span class="screen-reader-text">Admin index</span>
                </a>
            </nav>
            <h1 class="banner">Fric-frac</h1>
        </header>
        <?php echo $view();?>
        <footer class="page-footer">
            <p>&copy ModernWays 2020</p>
            <p>Opdracht Programmeren 4</p>
        </footer>
    </body>
    </html>
    1. We zetten het volgende klaar:
      1. De view: Views/Admin/Index.php (PHP MVC Views)
      2. De controller: Controllers/AdminController.php (PHP MVC Controllers)
    2. In public/index.php:
      1. we sluiten de nodige klassen in
      2. we halen de route op met getRouteData
      3. als er in de url geen entiteit en/of methode wordt opgegeven, gaat de dispatcher de AdminController instantiëren en de index actiemethode ervan uitvoeren.
      4. we instantieren de controllerklasse en voeren de actiemethode uit
      5. de retourwaarde, die een functie is, slaan we op in een variabele met de naam $view
      6. we voeren deze closure uit in de HTML door ronde hakken achter de $view variabele te plaatsen
  2. Als je met de ingebouwde webserver werkt moet je local.php aanpassen. Er is namelijk een probleem om de iconfonts te laden. In icon-font.css staat in de url een ? na de naam van de te laden font. Dat bestand met het vraagteken bestaat natuurlijk niet en zal dus niet geladen worden. Hier volgt code die het vraagteken en alles wat erna komt verwijdert:
    <?php
    function cleanUpFileName ($requestUri) {
       $queryStart = strpos($requestUri, '?');
       if ($queryStart > 0) {
          $requestUri = substr($requestUri, 0, $queryStart);
       }
       return $requestUri;
    }
    $uri = $_SERVER['REQUEST_URI'];
    $uri = cleanUpFileName($uri);
    $_SERVER['REQUEST_URI'] = $uri;
    if (file_exists(__DIR__ . '/' . $_SERVER['REQUEST_URI'])) {
       return false; // serve the requested resource as-is. 
    } else {
       include_once 'index.php';
    }
  3. Open de terminal
    1. Ga naar de public submap:
      cd public
    2. Start de ingebouwde webserver op met local.php:
      php -S localhost:63346 local.php
  4. Open de browser
    1. als je de volgende url http://localhost:63346/ intypt krijg je:
      PHP Threepenny MVC Admin-Index
      PHP Threepenny MVC Admin-Index
    2. Type je http://localhost:63346/Event/Index in:
      PHP Threepenny MVC Event-Index
      PHP Threepenny MVC Event-Index
    3. Typ je http://localhost:63346/Event/UpdatingOne in:
      PHP Threepenny MVC Event-UpdatingOne
      PHP Threepenny MVC Event-UpdatingOne

JI
2020-04-08 09:53:50